//
//  offset.h
//  ltlbmc
//
//  Created by GD Huang on 5/22/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#ifndef ltlbmc_offset_h
#define ltlbmc_offset_h

#include "fieldinfo.h"
#include "offset.h"
#include "astVisitor.h"

namespace cilast {
    
    class exp;
    class astVisitor;
    
    class offset : public OCamlObject {
        virtual int accept(astVisitor*);
    };
    
    class NoOffset : public offset {
        int accept(astVisitor*);

    };
    
    class OField : public offset {
    public:    
        fieldinfo* mfieldinfo;
        offset* moffset;
        
        int accept(astVisitor*);

    };
    
    class Index : public offset {
    public:    
        exp* mexp;
        offset* moffset;
        
        int accept(astVisitor*);
    };
    
}

#endif
